import { Label, _decorator } from 'cc';
import HeroEntity from '../../heroModule/HeroEntity';
import { HeroPOItem } from './HeroPOItem';
const { ccclass, property } = _decorator;

@ccclass('HeroEntityItem')
export class HeroEntityItem extends HeroPOItem {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    protected _value: HeroEntity = undefined!;
    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/
    @property({ group: { name: 'Entity', id: '3' }, type: Label, tooltip: `当前英雄攻击力文本组件` })
    private atkLabel: Label = undefined!;

    @property({ group: { name: 'Entity', id: '3' }, type: Label, tooltip: `当前英雄攻击力文本组件` })
    private defLabel: Label = undefined!;

    @property({ group: { name: 'Entity', id: '3' }, type: Label, tooltip: `当前英雄攻击力文本组件` })
    private hpLabel: Label = undefined!;
    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    protected onEnable(): void {
        this.updateView(this.value);
    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    protected updateView(value: HeroEntity = this.value) {
        super.updateView(value);
        if (!value) { return; }
        if (!this.enabledInHierarchy) { return; }

        this.atkLabel.string = value.attack.toFixed();
        this.defLabel.string = value.defense.toFixed();
        this.hpLabel.string = value.health.toFixed();
    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    public get value(): HeroEntity {
        return this._value;
    }
    public set value(value: HeroEntity) {
        this._value = value;
        this.updateView(value);
    }
}


